Counting Divisors
Counting Divisors
The Counting Divisors algorithm calculates the total number of divisors of a given integer n. Divisors are numbers that divide n without leaving a remainder. This algorithm is particularly useful in number theory problems, such as perfect number checking, factorization, and determining the structure of numbers.
Video Explanation

Algorithm to Count Divisors
To count the divisors of a number n, iterate through all integers from 1 to √n and check if they divide n. If they do, both the divisor and its corresponding pair are counted.
Steps:
- Initialize a counter to 0.
- For each integer i from 1 to √n:
- If n is divisible by i (i.e., n % i == 0), increment the counter.
- If i is not equal to n / i, increment the counter again, as both i and n / i are divisors.
- Return the counter as the total number of divisors.
Example
For n = 28:
- Divisors: 1, 2, 4, 7, 14, 28.
- Count of divisors: 6.
Code Implementation (C++)
#include <iostream>
#include <cmath>
using namespace std;
int countDivisors(int n) {
int count = 0;
for (int i = 1; i <= sqrt(n); i++) {
if (n % i == 0) {
count++;
if (i != n / i) {
count++;
}
}
}
return count;
}
int main() {
int n = 28;
cout << "Number of divisors of " << n << " is: " << countDivisors(n) << endl;
return 0;
}
Python Implementation
import math
def count_divisors(n):
count = 0
for i in range(1, int(math.sqrt(n)) + 1):
if n % i == 0:
count += 1
if i != n // i:
count += 1
return count
# Example usage
n = 28
print(f"Number of divisors of {n} is: {count_divisors(n)}")
Time Complexity
The time complexity of this algorithm is O(√n), as we iterate only up to the square root of n.
Applications of Counting Divisors
Counting divisors is widely used in various fields:
- Perfect Number Checking: To verify if a number is perfect, we need to check if the sum of its divisors equals the number itself.
- Prime Factorization: Understanding the structure of numbers by counting and finding the prime divisors.
- Mathematical Puzzles: Many problems in competitive programming rely on efficiently counting divisors.
Key Points to Remember
Efficient Counting: Instead of iterating up to n, iterate up to √n to reduce time complexity. Symmetry of Divisors: For every divisor i, n / i is also a divisor, making the count more efficient.
Completed working through this block? Sync progress to workspace.